#include <QMessageBox>
#include "table2.h"
#include "ui_table2.h"

Table2::Table2(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Table2)
{
    ui->setupUi(this);

    tablemodel = new TableModel();
    ui->tableView->setModel(tablemodel);
    ui->tableView->setSpan(0,1,1,tablemodel->CountExpert);
    ui->tableView->setSpan( (tablemodel->CountSvoi + 1),0,(tablemodel->CountSvoi + 2),(tablemodel->CountExpert + 1) );
}

Table2::~Table2()
{
    delete tablemodel;
    delete ui;
}

void Table2::on_pushButton_clicked()
{
    //расчет
    QList <QStandardItem*> list;                   //незаполненные итемы
    float mas_sr_exp[tablemodel->CountSvoi];       //среднее значение по экспертам
    float Summa_Srednix = 0;                       //сумма средних значений экспертов
    float mas_norm_koef[tablemodel->CountSvoi];    //нормированные коэффициенты свойства

    //Получение незаполненных итемов нужных для рассчета
    for(int j = 1; j < (tablemodel->CountSvoi + 1); j++)
    {
        int Summa_Expert = 0;
        for( int i = 1; i < (tablemodel->CountExpert + 1); i++ )
        {
            if(tablemodel->item(j,i)->text().isEmpty())
            {
                list <<tablemodel->item(j,i);
            }
            else
            {
                Summa_Expert += tablemodel->item(j,i)->text().toInt();
            }
        }
        mas_sr_exp[j-1] = Summa_Expert/tablemodel->CountExpert; //рассчет среднего значения по эксперту
    }

    //Предупреждающее сообщение о незаполненных итемах
    if(!list.isEmpty())
    {
        QString str;
        for(int i =0; i < list.size(); i++)
        {
            str.append(tr("ячейка").append(QString::number(list[i]->row() + 1)).append(QString::number(list[i]->column() + 1)).append("\n"));
        }
        QMessageBox::about(0,tr("Не заполнены"),str);
    }

    //Заполнение средними значениями по экспертам
    for(int i = 1; i < (tablemodel->CountSvoi + 1); i++)
    {
        tablemodel->item(i,(tablemodel->CountExpert + 1))->setText(QString::number(mas_sr_exp[i-1]));
        Summa_Srednix+=mas_sr_exp[i-1];
    }

    //Заполнение поля Сумма средних
    tablemodel->item((tablemodel->CountSvoi + 1),(tablemodel->CountExpert + 1))->setText(QString::number(Summa_Srednix));

    //Рассчет и заполнение нормированных коэффициентов
    for(int i = 1; i < (tablemodel->CountSvoi + 1); i++)
    {
        if(Summa_Srednix != 0)
        {
            mas_norm_koef[i-1] = mas_sr_exp[i-1]/Summa_Srednix;
        }
        else
        {
            mas_norm_koef[i-1] = 0;
        }
        tablemodel->item(i,(tablemodel->CountExpert + 2))->setText(QString::number(mas_norm_koef[i-1]));
    }

}
